﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BEL;

namespace Web_Guia_Digital_Georeferenciada.Mantenimientos
{
    public partial class Productos : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                if (Session["Comercio"] != null || Session["Cliente"] != null || Session["Usuario"] != null)
                {
                    if (Session["Usuario"] != null)
                    {
                        Usuario usu = (Usuario)Session["Usuario"];
                        lblUsuario.Text = "Usuario: " + usu.UsuarioNombre;
                    }
                }
                if (Session["Usuario"] == null)
                {
                    productos.Visible = false;
                    rubros.Visible = false;
                }
                else
                {
                    if (Session["Cliente"] != null)
                    {
                        usuarios.Visible = true;
                        productos.Visible = false;
                        rubros.Visible = false;
                        comercios.Visible = false;
                    }
                    else if (Session["Comercio"] != null)
                    {
                        productos.Visible = true;
                        rubros.Visible = false;
                        comercios.Visible = true;
                        usuarios.Visible = false;
                    }
                    else
                    {
                        productos.Visible = false;
                        rubros.Visible = true;
                        comercios.Visible = true;
                        usuarios.Visible = true;
                    }
                }

                if (Session["Usuario"] == null)
                {
                    Response.Write("<script>alert('Debe estar logueado para ingresar a esta seccion(proximamente filtro) ')</script>");
                    Response.Redirect("../PaginaPrincipalBT.aspx", false);
                }
                else
                {
                    if ((Session["Comercio"]) == null)
                    {
                        Response.Write("<script>alert('Debe ser un comercio para ingresar a esta seccion(proximamente filtro) ')</script>");
                        Response.Redirect("../PaginaPrincipalBT.aspx", false);
                    }
                    else if ((Session["Cliente"]) != null) {
                        Response.Write("<script>alert('Debe ser un comercio para ingresar a esta seccion(proximamente filtro) ')</script>");
                        Response.Redirect("../PaginaPrincipalBT.aspx", false);
                    }
                }

                if (!IsPostBack)
                {
                    //VerificarUsuario();
                    string proId = Convert.ToString(Request.QueryString["ProductoId"]);
                    if (!string.IsNullOrEmpty(proId))
                    {
                        Producto producto = Producto.BuscarProductoPorId(Convert.ToInt32(proId), (Comercio)Session["Comercio"]);
                        if (producto != null)
                        {
                            Session["Producto"] = producto;
                            txtNombre.Text = producto.ProductoNombre;
                            DDLCategoria.SelectedValue = Convert.ToString(producto.Categoria.CategoriaId);
                            btnAgregar.Visible = false;
                            btnModificar.Visible = true;
                            btnBorrar.Visible = true;
                            cargarComboCategoria();
                            listar();

                        }
                    }
                    else
                    {
                        btnAgregar.Visible = true;
                        btnModificar.Visible = false;
                        btnBorrar.Visible = false;
                        cargarComboCategoria();
                        listar();
                    }
                }



            }
            catch (System.Exception ex)
            {
                Response.Write("<script>alert('Ha ocurrido un error en la aplicación')</script>" + ex.Message);
            }
        }

        protected void btnAgregar_Click(object sender, EventArgs e)
        {
            try
            {
                Boolean result = Producto.AltaProducto(Convert.ToString(txtNombre.Text), Convert.ToInt32(DDLCategoria.SelectedValue), (Comercio)Session["Comercio"]);
                if (result)
                {
                    limpiarCampos();
                    lblError.Text = "El producto se dio de alta correctamente";
                    listar();
                }
                else
                {
                    lblError.Text = "No se dio de alta el producto";
                }

            }
            catch (System.Exception ex)
            {
                Response.Write("<script>alert('Ha ocurrido un error en la aplicación')</script>" + ex.Message);
            }
        }

        protected void btnModificar_Click(object sender, EventArgs e)
        {
            try
            {
                Producto p = (Producto)Session["Producto"];
                Boolean result = Producto.ModificarProducto(p.ProductoId, txtNombre.Text, Convert.ToInt32(DDLCategoria.SelectedValue), (Comercio)Session["Comercio"]);
                if (result)
                {
                    limpiarCampos();
                    lblError.Text = "El producto se modifico correctamente";
                    Session["Producto"] = null;
                    //listar();
                    Response.Redirect("~/Mantenimientos/MantenimientoDeProductos.aspx");
                }
                else
                {
                    lblError.Text = "No se modifico el producto";
                }
            }
            catch (System.Exception ex)
            {
                Response.Write("<script>alert('Ha ocurrido un error en la aplicación')</script>" + ex.Message);
            }
        }

        protected void btnCancelar_Click(object sender, EventArgs e)
        {
            try
            {
                limpiarCampos();
                Response.Redirect("~/Mantenimientos/MantenimientoDeProductos.aspx");
            }
            catch (System.Exception ex)
            {
                Response.Write("<script>alert('Ha ocurrido un error en la aplicación')</script>" + ex.Message);
            }
        }

        protected void btnBorrar_Click(object sender, EventArgs e)
        {
            try
            {
                Producto p = (Producto)Session["Producto"];
                Boolean result = Producto.BorrarProducto(Convert.ToInt32(p.ProductoId));
                if (result)
                {
                    limpiarCampos();
                    lblError.Text = "El producto se borro correctamente";
                    ///listar();
                    ///
                    Response.Redirect("~/Mantenimientos/MantenimientoDeProductos.aspx");
                }
                else
                {
                    lblError.Text = "No se borro el producto";
                }
            }
            catch (System.Exception ex)
            {
                Response.Write("<script>alert('Ha ocurrido un error en la aplicación')</script>" + ex.Message);
            }
        }

        public void limpiarCampos()
        {
            txtNombre.Text = "";

        }


        public void listar()
        {
            try
            {
                Comercio comercio = (Comercio)Session["Comercio"];
                if (comercio != null)
                {
                    List<Producto> productos = Producto.BuscarProductos(comercio);
                    GridProductos.DataSource = productos;
                    GridProductos.DataBind();
                }
                else
                {
                    lblError.Text = "No existe comercio para listar sus productos";
                }
            }
            catch (System.Exception ex)
            {
                Response.Write("<script>alert('Ha ocurrido un error en la aplicación')</script>" + ex.Message);
            }
        }

        public void cargarComboCategoria() { 

             List<Categoria> cat = Categoria.BuscarCategorias();
                    DDLCategoria.DataSource = cat;
                    DDLCategoria.DataBind();           
        }
    }
}